package com.zzx.demo.dao;

public final class HashFunction {
	private HashFunction(){
		
	}
	/**
     * 对三个数据库进行散列分布
     * 1、返回其他值，没有在配置文件中配置的，如负数等，在默认数据库中查找
     * 2、比如现在配置文件中配置有三个结果进行散列，如果返回为0，那么apply方法只调用一次，如果返回为2，
     *   那么apply方法就会被调用三次，也就是每次是按照配置文件的顺序依次的调用方法进行判断结果，而不会缓存方法返回值进行判断
     * @param id
     * @return
     */
    public static String applyUser(String username) {
        //先从缓存获取 没有则查询数据库
        //input 可能是id，拿id到缓存里去查用户的DB坐标信息。然后把库的编号输出
        int result = Math.abs(username.hashCode() % 1024);//0---1023
        String rtnStr = "master";
        System.out.println("hash:" + result);//333
        if(0 <= result && result < 512){
        	rtnStr = "master";
           // System.out.println("在第1个数据库中");
        }
        
        if(512 <= result && result < 1024){
        	rtnStr = "41";
            //System.out.println("在第3个数据库中");
        }
        return rtnStr;
    }
    public static void main(String []args){
    	String str = applyUser("t_pt_student");
    	System.err.println("*** "+ str);
    }
}
